﻿using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Carozos.BE;
using Carozos.Mok;
using System.Collections.Generic;

namespace Carozos.Test
{
    [TestClass]
    public class PedidoMoq
    {
        [TestMethod]
        public void RegistraPedidoCorrecto()
        {
            PedidoBC peBC = new PedidoBC(new FalsoPedidoDALC());
            int valor = peBC.insertPedido(new PedidoBE(1));
            Assert.AreEqual(1, valor);
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException),"Pedido Actualizado")]
        public void ActualizaPedidoCorrecto()
        {
            PedidoBC peBC = new PedidoBC(new FalsoPedidoDALC());
            peBC.updatePedido(new PedidoBE());
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException), "Detalle Agregado")]
        public void AgregaDetallePedidoCorrecto()
        {
            PedidoBC peBC = new PedidoBC(new FalsoPedidoDALC());
            peBC.addDetallePedido(new DetallePedidoBE(1));
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException), "Detalle Eliminado")]
        public void EliminaDetallePedidoCorrecto()
        {
            PedidoBC peBC = new PedidoBC(new FalsoPedidoDALC());
            peBC.deleteDetallePedido(new DetallePedidoBE(1));
        }

        [TestMethod]
        [ExpectedException(typeof(ArgumentException), "Detalle Actualizado")]
        public void ActualizaDetallePedidoCorrecto()
        {
            PedidoBC peBC = new PedidoBC(new FalsoPedidoDALC());
            peBC.updateDetallePedido(new DetallePedidoBE(1));
        }

        [TestMethod]
        public void ObtienePedidoPorCodigoCorrecto()
        {
            PedidoBC peBC = new PedidoBC(new FalsoPedidoDALC());
            PedidoBE pe = peBC.getPedidoByCodigo(1);
            Assert.AreEqual(1, pe.codigo);
        }

        [TestMethod]
        public void ObtieneDetallesCodigoPedidoCorrecto()
        {
            PedidoBC peBC = new PedidoBC(new FalsoPedidoDALC());
            List<DetallePedidoBE> lista = peBC.getDetallesByCodigoPedido(new PedidoBE(1));
            Assert.AreEqual(2, lista.Count);
        }
    }
}
